#ifndef H_LINKEDLISTS_20070212
#define H_LINKEDLISTS_20070212

#include "header.h"
#include "types.h"

#define		LIST_DATA(dat)						(data*)dat
#define		LIST_GENERIC(data)					(void*)data

#define 	LIST_FOREACH(E,list)				for (E=List_InitIter(list); E != NULL; E=List_IterNext(list))


List* List_New (void);

void* List_Pop (List *myList, Data** element);
int List_PushHead (List *myList, void* element);
int List_PushTail (List *myList, void* element);
int List_Count 	  (List *myList);

void *List_InitIter (List *myList);
void *List_IterNext (List *myList);

void* List_Find (List *myList, const char* key);

void* List_PopHead (List *myList);
void* List_PopTail (List *myList);

void List_Del (List *myList, Data** element);
void List_Destroy (List **myList);





#endif

